package main

import "fmt"

func main() {
	fmt.Println(max(2, 1))
	fmt.Println(min(2, 1))
	var sum, sub int = sumAndSub(2, 1)
	fmt.Println(sum, sub)
	show("执行函数...")

	show("abc")

	s := Sum(5, 4, 3, 2, 1)
	fmt.Println(s)

}

//简单函数定义，返回值变量和类型写后面，return时不用写返回变量名（不推荐这种写法，导致可读性变差）
func max(a int, b int) (ret int) {
	ret = 0
	if a > b {
		ret = a
	} else {
		ret = b
	}
	return
}

//相同类型的参数可只声明一个类型，返回值可只写类型
func min(a, b int) int {
	if a < b {
		return a
	}
	return b
}

//go的函数支持多返回
func sumAndSub(a, b int) (int, int) {
	return a + b, a - b
}

//没有返回值的函数可不写返回值括号与返回信息
func show(str string) {
	fmt.Println(str)
}

//不定长参数，变量arg是int型切片
func Sum(arg ...int) int {
	sum := 0
	for _, n := range arg {
		//fmt.Print(index, " ")
		//fmt.Print(n, " ")
		//fmt.Println(arg[index])
		sum += n
	}
	return sum
}
